package com.tracesystem.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tracesystem.commons.Result;
import com.tracesystem.controller.info.IssueProjectInfo;
import com.tracesystem.controller.form.*;
import com.tracesystem.controller.info.ProjectPageUserInfo;
import com.tracesystem.controller.info.SimpleUserInfo;
import com.tracesystem.model.InfoIssueProject;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author Kevin Martin
 * @since 2022-03-23
 */
@Transactional
public interface InfoIssueProjectService extends IService<InfoIssueProject> {

    Result<?> closeProject(CloseProjectForm closeProjectForm);

    Result<?> addProject(NewProjectForm newProjectForm);

    Result<?> changeProject(ChangeProjectForm changeProjectForm);

    Result enableProject(OpenProjectForm openProjectForm);

    Result<Page<IssueProjectInfo>> getProjectPageinfor(ProjectPageForm projectPageForm);

    Result<?> doProjectBindRole(ProjectBindRoleForm projectBindRoleForm);

    Result<List<SimpleUserInfo>> getListUserByRole();

    Result cutMember(RMMemberByUid rmMemberByUid);

    Result<Page<ProjectPageUserInfo>> findPageProjectUsers(PorjectPageUserForm porjectPageUserForm);
}
